package day14;

import java.util.concurrent.*;

/**
 * @author Xiao
 * @date 2021/8/7
 */
public class ThreadPoolDemo02 {
    /**
     * 构造方法：
     * ThreadPoolExecutor(
     * int corePoolSize,        核心线程数量
     * int maximumPoolSize,         最大线程数
     * long keepAliveTime,              空闲线程最大存活时间
     * TimeUnit unit,                       时间单位
     * BlockingQueue<Runnable> workQueue,       任务队列
     * ThreadFactory threadFactory,             创建线程工厂
     * RejectedExecutionHandler handler)：       任务的拒绝策略
     * 创建一个新 ThreadPoolExecutor给定的初始参数。
     * 参数（7个）：核心线程数量；最大线程数；空闲线程最大存活时间；时间单位；任务队列；创建线程工厂；任务的拒绝策略。
     */
    public static void main(String[] args) {
        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                5,
                10,
                2,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(2),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());

        pool.submit(() -> {
            System.out.println(Thread.currentThread().getName() + "在执行。。。");
        });
        pool.submit(() -> {
            System.out.println(Thread.currentThread().getName() + "在执行。。。");
        });
    }
}
